package org.baeta.client;

import org.baeta.client.schema.CountryInfoService;
import org.baeta.client.schema.CountryInfoServiceImplService;
import org.baeta.client.schema.CountryInfo;
import org.baeta.client.schema.WeatherObservation;
import org.baeta.client.schema.GeoName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Description
 *
 * @author <a href="mailto:rui.baeta@gmail.com">Rui Baeta</a>
 */
public class CountryInfoServiceClient
{
    private static final Log LOG = LogFactory.getLog(CountryInfoServiceClient.class);

    public static void main(String[] args)
    {
        String countryCode = args[0];

        CountryInfoServiceImplService countryInfoService = new CountryInfoServiceImplService();
        CountryInfoService service = countryInfoService.getCountryInfoServiceImplPort();

        CountryInfo countryInfo = service.getCountryInfo(countryCode);

        GeoName geoName = countryInfo.getGeoName();
        WeatherObservation weatherObs = countryInfo.getWeatherObservation();

        LOG.info(String.format(
                "\nCódigo do país (alfa 2): %s" +
                "\nLíngua: %s" +
                "\nPopulação: %d" +
                "\nMoeda: %s" +
                "\nCapital: %s" +
                "\nCódigo ICAO da Capital: %s" +
                "\nCoordenadas geográficas: Lat: %f Long: %f" +
                "\nInformação do Tempo na Capital: " +
                "\n\tData: %s" +
                "\n\tTempo: %s" +
                "\n\tTemperatura: %f" +
                "\n\tHumidade: %f" +
                "\n\tVento: %s" +
                "\n\tEstação: %s",
                geoName.getCountryCode(),
                geoName.getLanguages(),
                geoName.getPopulation(),
                geoName.getCurrencyCode(),
                geoName.getCapital(),
                weatherObs.getIcaoCode(),
                weatherObs.getLatitude(), weatherObs.getLongitude(),
                weatherObs.getObservationTime(),
                weatherObs.getClouds(),
                weatherObs.getTemperature(),
                weatherObs.getHumidity(),
                weatherObs.getWindSpeed(),
                weatherObs.getStationName()));


        /**
        Código do país (alfa 2): PT
        Língua: pt-PT,mwl
        População: 10676000
        Moeda: EUR
        Capital: Lisboa
        Código ICAO da Capital: LPPT
        Coordenadas geográficas: Lat: 38.766666666666666 Long: -9.116666666666667
        Informação do Tempo na Capital:
            Data: Thu Sep 27 23:30:00 WEST 2012
            Tempo: few clouds
            Temperatura: 15.0
            Humidade: 87.0
            Vento: 05
            Estação: Lisboa / Portela
        */
    }
}
